import request from '@/utils/request'

// ==================== 笔记管理 ====================

// 获取笔记列表
export function getNoteList(params) {
  return request({
    url: '/api/zenithMind/note/list',
    method: 'get',
    params
  })
}

// 获取笔记详情
export function getNoteDetail(id) {
  return request({
    url: `/api/zenithMind/note/${id}`,
    method: 'get'
  })
}

// 创建笔记
export function createNote(data) {
  return request({
    url: '/api/zenithMind/note',
    method: 'post',
    data
  })
}

// 更新笔记
export function updateNote(id, data) {
  return request({
    url: `/api/zenithMind/note/${id}`,
    method: 'put',
    data
  })
}

// 删除笔记
export function deleteNote(id) {
  return request({
    url: `/api/zenithMind/note/${id}`,
    method: 'delete'
  })
}

// 搜索笔记
export function searchNotes(keyword, params) {
  return request({
    url: '/api/zenithMind/note/search',
    method: 'get',
    params: { keyword, ...params }
  })
}

// 获取我的笔记
export function getMyNotes(params) {
  return request({
    url: '/api/zenithMind/note/my',
    method: 'get',
    params
  })
}

// 获取最近编辑的笔记
export function getRecentNotes(limit = 10) {
  return request({
    url: '/api/zenithMind/note/recent',
    method: 'get',
    params: { limit }
  })
}

// 收藏笔记
export function favoriteNote(id) {
  return request({
    url: `/api/zenithMind/note/${id}/favorite`,
    method: 'post'
  })
}

// 取消收藏
export function unfavoriteNote(id) {
  return request({
    url: `/api/zenithMind/note/${id}/unfavorite`,
    method: 'post'
  })
}

// 获取收藏笔记
export function getFavoriteNotes(params) {
  return request({
    url: '/api/zenithMind/note/favorites',
    method: 'get',
    params
  })
}

// 获取相关笔记
export function getRelatedNotes(noteId, limit = 6) {
  return request({
    url: `/api/zenithMind/note/${noteId}/related`,
    method: 'get',
    params: { limit }
  })
}

// ==================== 笔记分类管理 ====================

// 获取笔记分类
export function getNoteCategories() {
  return request({
    url: '/api/zenithMind/note/categories',
    method: 'get'
  })
}

// 创建笔记分类
export function createNoteCategory(data) {
  return request({
    url: '/api/zenithMind/note/categories',
    method: 'post',
    data
  })
}

// 更新笔记分类
export function updateNoteCategory(id, data) {
  return request({
    url: `/api/zenithMind/note/categories/${id}`,
    method: 'put',
    data
  })
}

// 删除笔记分类
export function deleteNoteCategory(id) {
  return request({
    url: `/api/zenithMind/note/categories/${id}`,
    method: 'delete'
  })
}

// 按分类获取笔记
export function getNotesByCategory(categoryId, params) {
  return request({
    url: `/api/zenithMind/note/category/${categoryId}`,
    method: 'get',
    params
  })
}

// ==================== 笔记标签管理 ====================

// 获取笔记标签
export function getNoteTags() {
  return request({
    url: '/api/zenithMind/note/tags',
    method: 'get'
  })
}

// 按标签获取笔记
export function getNotesByTag(tag, params) {
  return request({
    url: `/api/zenithMind/note/tag/${tag}`,
    method: 'get',
    params
  })
}

// 获取热门标签
export function getHotNoteTags(limit = 20) {
  return request({
    url: '/api/zenithMind/note/tags/hot',
    method: 'get',
    params: { limit }
  })
}

// ==================== 笔记分享管理 ====================

// 分享笔记
export function shareNote(id, data) {
  return request({
    url: `/api/zenithMind/note/${id}/share`,
    method: 'post',
    data
  })
}

// 取消分享
export function unshareNote(id) {
  return request({
    url: `/api/zenithMind/note/${id}/unshare`,
    method: 'post'
  })
}

// 获取分享的笔记
export function getSharedNotes(params) {
  return request({
    url: '/api/zenithMind/note/shared',
    method: 'get',
    params
  })
}

// 获取我分享的笔记
export function getMySharedNotes(params) {
  return request({
    url: '/api/zenithMind/note/my-shared',
    method: 'get',
    params
  })
}

// 访问分享笔记
export function accessSharedNote(shareCode, password) {
  return request({
    url: `/api/zenithMind/note/shared/${shareCode}`,
    method: 'post',
    data: { password }
  })
}

// ==================== 笔记协作管理 ====================

// 邀请协作者
export function inviteCollaborator(noteId, data) {
  return request({
    url: `/api/zenithMind/note/${noteId}/collaborators`,
    method: 'post',
    data
  })
}

// 获取协作者列表
export function getCollaborators(noteId) {
  return request({
    url: `/api/zenithMind/note/${noteId}/collaborators`,
    method: 'get'
  })
}

// 移除协作者
export function removeCollaborator(noteId, userId) {
  return request({
    url: `/api/zenithMind/note/${noteId}/collaborators/${userId}`,
    method: 'delete'
  })
}

// 更新协作权限
export function updateCollaboratorPermission(noteId, userId, permission) {
  return request({
    url: `/api/zenithMind/note/${noteId}/collaborators/${userId}/permission`,
    method: 'put',
    data: { permission }
  })
}

// 获取协作笔记
export function getCollaborativeNotes(params) {
  return request({
    url: '/api/zenithMind/note/collaborative',
    method: 'get',
    params
  })
}

// ==================== 笔记版本管理 ====================

// 获取笔记版本历史
export function getNoteVersions(noteId) {
  return request({
    url: `/api/zenithMind/note/${noteId}/versions`,
    method: 'get'
  })
}

// 恢复笔记版本
export function restoreNoteVersion(noteId, versionId) {
  return request({
    url: `/api/zenithMind/note/${noteId}/versions/${versionId}/restore`,
    method: 'post'
  })
}

// 比较笔记版本
export function compareNoteVersions(noteId, version1, version2) {
  return request({
    url: `/api/zenithMind/note/${noteId}/versions/compare`,
    method: 'get',
    params: { version1, version2 }
  })
}

// ==================== 笔记模板管理 ====================

// 获取笔记模板
export function getNoteTemplates(params) {
  return request({
    url: '/api/zenithMind/note/templates',
    method: 'get',
    params
  })
}

// 使用模板创建笔记
export function createNoteFromTemplate(templateId, data) {
  return request({
    url: `/api/zenithMind/note/templates/${templateId}/create`,
    method: 'post',
    data
  })
}

// 保存为模板
export function saveAsTemplate(noteId, data) {
  return request({
    url: `/api/zenithMind/note/${noteId}/save-as-template`,
    method: 'post',
    data
  })
}

// ==================== 笔记上传 ====================

// 上传笔记图片
export function uploadNoteImage(formData) {
  return request({
    url: '/api/zenithMind/note/upload/image',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// 上传笔记附件
export function uploadNoteAttachment(formData) {
  return request({
    url: '/api/zenithMind/note/upload/attachment',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// ==================== 笔记导入导出 ====================

// 导出笔记
export function exportNote(noteId, format) {
  return request({
    url: `/api/zenithMind/note/${noteId}/export`,
    method: 'get',
    params: { format },
    responseType: 'blob'
  })
}

// 导入笔记
export function importNote(formData) {
  return request({
    url: '/api/zenithMind/note/import',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}
